import java.util.List;

/**
 * Interface fuer Binary Search Tress
 *
 * @author wolke
 * @version 1.0, 19.06.2011
 *
 */



public interface AbstractBinarySearchTree {

	public enum Order {
		INORDER, PREORDER, POSTORDER
		
	}

	public abstract void addValue(Integer value_)
			throws BinarySearchTreeException;

	/**
	 * @param value_ the value we'd like to delete
	 * @throws BinarySearchTreeException If the value is not in the tree.
	 */
	public abstract void delValue(Integer value_)
			throws BinarySearchTreeException;

	/**
	 * @param value_ The value we are searching
	 * @return True or False(we couldn't find it)
	 */
	public abstract boolean hasValue(Integer value_);

	public abstract Integer getDepth();
	
	public abstract List<Integer> traverse (Order ord);

}
